This invention relates generally to computer systems, methods, and program products, and more particularly to computer systems, methods, and program products for software development.
Object oriented programming is a computer programming packaging technique which provides reusable and easily expandable programs. In a traditional procedural program, emphasis is placed on methods to be conducted on particular data sets. By contrast, in an object oriented program, emphasis is placed on data. As is well known to those having skill in the art of object oriented programming, object oriented programs are composed of various types of xe2x80x9cobjectsxe2x80x9d.
An object is a data structure, also referred to as a xe2x80x9cframexe2x80x9d, and a set of operations or functions, also referred to as xe2x80x9cmethodsxe2x80x9d, for accessing and manipulating the data structure. Objects having identical data structures and common behavior can be grouped together into, and collectively identified as a xe2x80x9cclass.xe2x80x9d Objects are instances created from a particular class. Each object inherits the data structure and methods of the particular class from which it was instantiated. A hierarchical inheritance relationship exists between multiple classes. For example, one class may be considered a xe2x80x9cparentxe2x80x9d of another class (the xe2x80x9cchildxe2x80x9d of the parent class). The child class is said to be xe2x80x9cderivedxe2x80x9d from the parent class and inherits all of the attributes and methods of the parent class.
Increasingly, developers are utilizing a team approach in developing object oriented program applications. Component-based development is quickly becoming the focus of many new development efforts. In this type of development, team members working on an application share components stored in libraries to build applications. Components are basically encapsulated software objects, or specifications capable of creating such objects, providing some type of known service that can be used in combination with other components to build applications.
TeamConnection is a software product of International Business Machines, Inc. that provides a team development environment that includes the following: configuration management; version management; change management; and build support for developing multi-tier, multi-language applications across platforms. TeamConnection provides a single repository for development data including reusable parts such as JavaBeans and ActiveX, source code such as C++, COBOL and Java, web applets, HTML documents, end user documentation, test cases, and modeled objects.
TeamConnection facilitates parallel development involving multiple developers. Various mechanisms are provided for allowing developers to access the same objects or components in a corresponding library at the same time without negatively affecting the work of others. TeamConnection also mediates changes made to objects by multiple developers and for controlling the versions of objects stored in the library.
TeamConnection manages development utilizing xe2x80x9cpartsxe2x80x9d which are uniquely named and xe2x80x9cversionedxe2x80x9d objects stored in TeamConnection. As is known to those skilled in the art of object oriented programming, TeamConnection provides an open model for using classes to create managed objects. A part class can be subclassed by applications to create versioned objects for application specific purposes. TeamConnection supports the development of client/server and distributed applications on Multiple Virtual Storage (MVS), OS/2, Unix and Windows operating systems, and can be configured as stand-alone, or in LAN-based client/server mode.
Developers utilizing the TeamConnection environment, are permitted to xe2x80x9ccheck-outxe2x80x9d parts from the TeamConnection repository to a work area. A work area is used by developers to modify existing parts and create new parts for an application. To retrieve a part from TeamConnection, a developer uses an application that checks out the part and brings over the part contents in some form that the user can work with. For example, for a part that stores C++ source code, the application would be one that retrieved the contents into a file so the developer could employ a text editor to modify the C++ source code. Then, when the changes are complete, the developer uses the same application to move the new contents back into TeamConnection. The developer then asks TeamConnection to build the C++ code into an executable. TeamConnection gives the contents of the part to a C++ compiler to produce the executable which is then saved in TeamConnection. The developer can now retrieve and test the executable.
While TeamConnection allows for the efficient management of software libraries, TeamConnection does not provide for tracking documentation which may underlie the entire software development process. Such documentation is typically tracked and managed in a separate system which is isolated from the software library and configuration control tool such as TeamConnection. Thus, while many software development teams may realize the need for a software library and configuration control tool as they develop more complex applications, other intellectual assets of the team, such as technical documentation may be scattered in a wide variety of mediums which are typically not well synchronized with the actual implementation of the software product. For example, users may not know the status of development as it relates to design specifications or other technical information during the development process. Without this information, it may be difficult, if not impossible, to track the status of particular requirements or designs through the development process and relate versions of software back to the specific requirements that resulted in the software being developed. This inability to track status may be a disadvantage if the development team is to be expanded to include more than the software developers such as to include marketing, technical writers and system architects. Furthermore, without a traceable audit process it may be difficult to achieve certification, such as ISO9000 or other certification standards.
In view of the above discussion, it is an object of the present invention to provide improved tracking of software development.
A further object of the present invention is to provide a system which allows coordination beyond traditional software developers.
Yet another object of the present invention is to provide a single system which may be used in differing aspects of the development process without redesigning the development system.
Still another object of the present invention is to provide a system development system which is flexible and allows for differing development strategies.
These and other objects of the present invention are provided by methods, systems and computer program products which provide a document management system suitable for incorporation with a software management and control library by encapsulating a plurality of document databases with a template so as to provide a document database which interacts with the software management and control library. In particular, the plurality of document databases are defined utilizing the template. Furthermore, it is preferred that the template be utilized to define a requirements document database, define a design and development document database and define a test document database.
By incorporating the definitions of the database under a single template, the present invention provides for flexibility in differing software development environments which still presenting the user or system administrator with a single documentation entity having commonality across the differing databases. Thus, the look and feel of a single database may be maintained while the flexibility of multiple databases with tailored definitions may be provided.
In particular embodiment of the present invention, the requirements document database definition includes defining a requirements document for storing requirements information in the requirements document database and defining a feature document for storing in the requirements document database feature information associated with requirements documents stored in the requirements documents database. As used herein, a xe2x80x9cfeaturexe2x80x9d denotes an enhancement or improvement-driven unit of work for software development. The design and development document data base definition may further include defining a design document for storing design information in the design and development document database, defining a low level design document for storing additional design information associated with design documents in the design and development database, defining a change document for storing design change information associated with at least one of a design document and a low level design document stored in the design and development database and defining a feature document for storing in the design and development document database, feature information associated with design documents, low level design documents or change documents stored in the design and development database. The test document database defining may further include defining a test case document for storing test case information in the test case document database, defining an execution record document for storing in the test document database, execution information associated with a test case document stored in the test document database and defining a defect document for storing in the test document database, defect information associated with execution records stored in the test document database. As used herein, a xe2x80x9cdefectxe2x80x9d denotes a problem-driven unit of work for software development.
In a further embodiment of the present invention, each of the defined documents includes a link field for associating documents created by the definition with another document. Furthermore, a plurality of user authority levels associated with the plurality of document databases may be defined by the template. The plurality of user authority levels define access and control rights associated with documents stored in the plurality of databases. Also, a plurality of allowed status states may be defined by the template for at least one document definition for the requirement documents database, the design and development documents database or the test database. Actions allowed for documents created using the document definitions may then also be defined by the template so as to control the allowed actions based on a combination of the status state of the created document and a user authority level associated with a user accessing the created document.
The template may also define a form format for use in accessing documents from each of the plurality of databases. Preferably, the form format includes at least one predefined subform and at least one user defined subform.
In a preferred embodiment, the template is a Lotus Notes template.
It will be understood by those having skill in the art that the present invention may be generalized to provide a general database schema that can be adapted to database applications other than software management and document databases. Thus, users may define databases to be encapsulated with a template to thereby define relationships among databases. As will be appreciated by those of skill in the art, the present invention may be provided as methods, systems and computer program products.